﻿using System;
using System.Collections.Generic;
using Com.FastSearch.SharePoint.Interfaces;

namespace ESPWebPartsUnitTest.mock
{
    public class ESPSearchRequestMock: IESPSearchSettings
    {
        private int numberOfResultsPerPage;
        private string espSearchView;
        private string synonymsEnabled;
        private string lemmatizationEnabled;
        private string spellcheck;
        private string resultSorting;
        private string queryTemplate;
        private string customQueryProperties;
        private string queryURLPropertyName;
        private string espConnection;

        private IESPSearchResult resu = null;
        private string customResultSorting;

        public IESPSearchResult Result
        {
            get
            {
                return resu;
            }
            set
            {
                resu = value;
            }
        }

        public int NumberOfResultsPerPage
        {
            get { return numberOfResultsPerPage; }
            set { numberOfResultsPerPage = value; }
        }

        public string ESPSearchView
        {
            get { return espSearchView; }
            set { espSearchView = value; }
        }

        public string SynonymsEnabled
        {
            get { return synonymsEnabled; }
            set { synonymsEnabled = value; }
        }

        public string LemmatizationEnabled
        {
            get { return lemmatizationEnabled; }
            set { lemmatizationEnabled = value; }
        }

        public string Spellcheck
        {
            get { return spellcheck; }
            set { spellcheck = value; }
        }

        public string ResultSorting
        {
            get { return resultSorting; }
            set { resultSorting = value; }
        }

        public string QueryTemplate
        {
            get { return queryTemplate; }
            set { queryTemplate = value; }
        }

        public string StaticCustomQueryProperties
        {
            get { return customQueryProperties; }
            set { customQueryProperties = value; }
        }

        public string QueryURLPropertyName
        {
            get { return queryURLPropertyName; }
            set { queryURLPropertyName = value; }
        }

        public string ESPConnection
        {
            get { return espConnection; }
            set { espConnection = value; }
        }

        public string Sort
        {
            get;
            set;
        }

        public string UserQuery
        {
            get;
            set;
        }

        public string[] Nav
        {
            get;
            set;
        }

        public string NavigationParameter
        {
            get;
            set;
        }

        public string[] ScopeNav
        {
            get;
            set;
        }

        public string ScopeNavigationParameter
        {
            get;
            set;
        }

        public char NavSplitCharacter
        {
            get;
            set;
        }

        public int Start1
        {
            get;
            set;
        }

        public string Scope
        {
            get;
            set;
        }

        public string Navigation
        {
            get;
            set;
        }

        public void AddNavigator(IESPNavigatorDefinition navigator)
        {
            throw new NotImplementedException();
        }

        public string CustomResultSorting
        {
            get { return customResultSorting; }
            set { customResultSorting = value; }
        }
        
        public void SetCustomParameterByName(string parameterName, string parameterValue)
        {          
        }

       
        public string GetCustomParameterByName(string parameterName)
        {
            return null;
        }

      
        public List<KeyValuePair<string,string>> GetAllCustomParameter()
        {
            List<KeyValuePair<string,string>> list = new List<KeyValuePair<string,string>>();
          
            return list;

        }

        public string WeightedSearchQuery
        {
            get;
            set;
        }
    }
}